With development of science and technology, Internet plays an increasingly vital role in daily life. In an era of networks at present, various types of data may be transmitted using a network. During data transmission, traffic is to be limited for various reasons. To limit traffic, software for data transmission, as well as a related Internet product, may use a basic strategy, such as a leaky-bucket strategy, a token-bucket strategy, etc. With a leaky-bucket algorithm, bursting traffic may be shaped so as to provide a stable traffic for a network. A leaky bucket may be viewed as a queue for a single server with a constant period of serving time. If a leaky bucket (packet cache) overruns, then a packet will be thrown away. A main goal of a leaky-bucket algorithm is to control a rate at which data are injected into a network, to smooth bursting traffic on the network.
According to a token-bucket algorithm, a system will put tokens into a bucket at a constant speed. If a request is to be processed, then first a token has to be acquired from the bucket. When no token is left in the bucket, then a service is refused. Another benefit with a token bucket may be that it is easy to change a speed. A rate at which tokens are put into a bucket may be increased as needed, when a rate is to be increased.
As a leaking rate of a leaky bucket is a fixed parameter, a leaky-bucket algorithm cannot make an individual flow burst to reach a port rate, even where there is no resource conflict (no congestion) in a network. Therefore, under certain circumstances, a leaky-bucket algorithm may not make effective use of a resource of a network. With an ultimate goal to maintain a smooth rate, a leaky-bucket algorithm may be ineffective for traffic of a bursty nature.
A token-bucket algorithm, on the other hand, may be suitable for such traffic of a bursty nature. However, a token-bucket algorithm has its own limitation. First, like a leaky-bucket algorithm, a token-bucket algorithm may as well require a large buffer to store a queue, and thus be more suitable for being run on a large system, such as software of a Personal Computer (PC for short), a website on the Internet, etc. Secondly, a token-bucket algorithm mainly aims at limiting and shaping traffic, and provides no elaboration as to when no token is left in a bucket. Therefore, when high traffic is maintained in a network within a short period of time, a packet-loss rate may still be a factor that impacts quality of transmission, leading to low bandwidth utilization. In addition, compared to a leaky bucket, a token bucket may allow bursting traffic but for a short moment, which essentially still serves for “limiting and shaping” traffic, instead of boosting a rate. A vital topic of a data channel product is concurrent rates. During concurrent uplink and downlink transmissions, more often than not, an uplink rate and a downlink rate thereof cannot reach an individual rate at which an individual upload or an individual download is performed. Neither a leaky-bucket algorithm nor a token-bucket algorithm can implement uplink and downlink rates that reach an individual rate at which an individual upload or an individual download is performed.
In addition, an uplink packet (a packet sent or transmitted uplink) will be subject to multiple strata of processing. For example, considering data transmission in an Internet of Things, also referred to as Machine-Type Communications (MTC for short), an uplink packet will be processed by strata such as a physical stratum, Medium Access Control (MAC for short), Radio Link Control (RLC for short), Packet Data Convergence Protocol (PDCP for short) of a radio protocol stack, etc. A data body of a small packet may be no major portion of a size of the whole packet. A header of each packet may be processed stratum by stratum. This may lower work efficiency of a radio protocol stack, causing slow data transmission.
No effective solution for the slow data transmission has been proposed to date.